Angular অ্যাপ্লিকেশনগুলিতে সার্ভারের সাথে ডেটা আদান-প্রদান করার জন্য HttpClient ব্যবহার করা হয়। তবে, প্রকৃত সার্ভার সংযোগের জন্য HTTP রিকোয়েস্ট করার আগে ডেভেলপমেন্ট বা টেস্টিং অবস্থায় HTTP রিকোয়েস্ট মকিং বা HTTP mocking খুবই গুরুত্বপূর্ণ। মকিংয়ের মাধ্যমে আপনি প্রকৃত সার্ভারে রিকোয়েস্ট না পাঠিয়ে শুধুমাত্র পরীক্ষামূলক ডেটা ব্যবহার করে অ্যাপ্লিকেশনটি টেস্ট করতে পারেন। Angular-এ HTTP রিকোয়েস্ট মক করতে প্রধানত HttpClientTestingModule
এবং HttpTestingController
ব্যবহৃত হয়।
Angular-এ HTTP রিকোয়েস্ট মক করার জন্য আপনাকে HttpClientTestingModule এবং HttpTestingController ব্যবহার করতে হবে। এগুলি @angular/common/http/testing থেকে আমদানি করতে হবে।
প্রথমে, HttpClientTestingModule
এবং HttpTestingController
ইনস্টল করতে হবে:
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { TestBed } from '@angular/core/testing';
import { HttpClient } from '@angular/common/http';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
let httpClient: HttpClient;
let httpTestingController: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
declarations: [AppComponent]
});
httpClient = TestBed.inject(HttpClient);
httpTestingController = TestBed.inject(HttpTestingController);
});
afterEach(() => {
httpTestingController.verify(); // HTTP কন্ট্রোলার ঠিকঠাক বন্ধ হচ্ছে কিনা তা নিশ্চিত করুন।
});
});
এখন, HttpTestingController
ব্যবহার করে HTTP রিকোয়েস্ট মক করা যেতে পারে।
ধরা যাক, আপনি একটি GET রিকোয়েস্ট মক করতে চান যা https://api.example.com/data
URL থেকে ডেটা ফেচ করবে।
it('should return data for GET request', () => {
const mockData = { name: 'John Doe', age: 30 };
// HTTP GET রিকোয়েস্ট কল করুন
httpClient.get('https://api.example.com/data').subscribe(data => {
expect(data).toEqual(mockData); // ডেটা যাচাই করুন
});
// HTTP রিকোয়েস্টটি মক করুন
const req = httpTestingController.expectOne('https://api.example.com/data');
expect(req.request.method).toEqual('GET'); // রিকোয়েস্ট মেথড চেক করুন
req.flush(mockData); // মকড রেসপন্স ফেরত পাঠান
});
এখানে:
httpClient.get()
মেথডটি HTTP GET রিকোয়েস্ট তৈরি করে।httpTestingController.expectOne()
ব্যবহার করা হয়েছে রিকোয়েস্টটি মক করার জন্য এবং এটি শুধুমাত্র একটিমাত্র রিকোয়েস্টের জন্য অপেক্ষা করে।req.flush(mockData)
মেথডের মাধ্যমে মক ডেটা ফেরত পাঠানো হয়েছে।এখন, POST রিকোয়েস্ট মক করা যাক, যেখানে সার্ভারে কিছু ডেটা পাঠানো হবে।
it('should return data for POST request', () => {
const postData = { name: 'Jane Doe', age: 28 };
const mockResponse = { success: true };
httpClient.post('https://api.example.com/user', postData).subscribe(response => {
expect(response).toEqual(mockResponse); // রেসপন্স যাচাই
});
const req = httpTestingController.expectOne('https://api.example.com/user');
expect(req.request.method).toEqual('POST'); // রিকোয়েস্ট মেথড চেক করুন
expect(req.request.body).toEqual(postData); // পাঠানো ডেটা চেক করুন
req.flush(mockResponse); // মক রেসপন্স ফেরত পাঠান
});
এখানে:
httpClient.post()
মেথড ব্যবহার করে POST রিকোয়েস্ট তৈরি করা হয়েছে।req.request.body
দিয়ে মক ডেটা যাচাই করা হয়েছে।req.flush(mockResponse)
মাধ্যমে মক রেসপন্স দেওয়া হয়েছে।আপনি যদি HTTP রিকোয়েস্টের জন্য ত্রুটি টেস্ট করতে চান, তাহলে req.flush()
মেথডে ত্রুটি যুক্ত করতে পারেন।
it('should handle error response for GET request', () => {
const mockError = { status: 404, statusText: 'Not Found' };
httpClient.get('https://api.example.com/data').subscribe(
data => fail('Expected an error, not data'),
error => {
expect(error.status).toEqual(404);
expect(error.statusText).toEqual('Not Found');
}
);
const req = httpTestingController.expectOne('https://api.example.com/data');
req.flush('Error', mockError); // ত্রুটি পাঠানো
});
এখানে:
req.flush('Error', mockError)
ব্যবহার করে ত্রুটির অবজেক্ট পাঠানো হয়েছে এবং টেস্ট করা হয়েছে কিভাবে ত্রুটি হ্যান্ডেল হয়।Angular অ্যাপ্লিকেশনে HTTP রিকোয়েস্ট মক করা একটি শক্তিশালী টুল যা ডেভেলপমেন্ট এবং টেস্টিং প্রক্রিয়া সহজ করে তোলে। HttpClientTestingModule
এবং HttpTestingController
ব্যবহার করে আপনি সহজেই HTTP রিকোয়েস্ট এবং রেসপন্স মক করতে পারেন, যা অ্যাপ্লিকেশনের লজিক টেস্ট করা এবং ডেভেলপমেন্টে সাহায্য করে।
Read more